package com.jeegod.core.system.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeegod.core.base.BaseDTO;
import com.jeegod.core.util.Dates;

import javax.persistence.*;
import java.util.Date;

/**
 * 系统用户
 *
 * @author 龚小龙
 * @version 1.0-20181216
 */
@Table(name="sys_user")
public class User extends BaseDTO {

    /**
     * 序列版本ID，用于序列化绑定，反序列化时验证
     */
    private static final long serialVersionUID = 1723039691049769161L;

    /**
     * 用户ID
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @OrderBy("desc")
    private Long userId;

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 昵称
     */
    private String nickname;

    /**
     * 生日
     */
    @JsonFormat(pattern = Dates.Pattern.DATE)
    private Date birthday;

    /**
     * 性别：1-男/0-女,参考：{@link com.jeegod.core.constants.Constants.Sex}
     */
    private Integer sex;

    /**
     * 是否启用：1-启用/0-停用，参考：{@link com.jeegod.core.constants.Constants.Flag}
     */
    private Integer enabled;

    /**
     * 获取：用户ID
     *
     * @return 用户ID
     */
    public Long getUserId() {
        return userId;
    }

    /**
     * 设置：用户ID
     *
     * @param userId 用户ID
     */
    public void setUserId(Long userId) {
        this.userId = userId;
    }

    /**
     * 获取：用户名
     *
     * @return 用户名
     */
    public String getUsername() {
        return username;
    }

    /**
     * 设置：用户名
     *
     * @param username 用户名
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /**
     * 获取：密码
     *
     * @return 密码
     */
    public String getPassword() {
        return password;
    }

    /**
     * 设置：密码
     *
     * @param password 密码
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * 获取：昵称
     *
     * @return 昵称
     */
    public String getNickname() {
        return nickname;
    }

    /**
     * 设置：昵称
     *
     * @param nickname 昵称
     */
    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    /**
     * 获取：生日
     *
     * @return 生日
     */
    public Date getBirthday() {
        return birthday;
    }

    /**
     * 设置：生日
     *
     * @param birthday 生日
     */
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    /**
     * 获取：性别
     *
     * @return 性别
     */
    public Integer getSex() {
        return sex;
    }

    /**
     * 设置：性别
     *
     * @param sex 性别
     */
    public void setSex(Integer sex) {
        this.sex = sex;
    }

    /**
     * 获取：是否启用
     *
     * @return 是否启用
     */
    public Integer getEnabled() {
        return enabled;
    }

    /**
     * 设置：是否启用
     *
     * @param enabled 是否启用
     */
    public void setEnabled(Integer enabled) {
        this.enabled = enabled;
    }

}
